Bloque 7.1 · 35 min

Introducción a DCL

DCL (Data Control Language) es la parte de SQL encargada de controlar accesos y permisos dentro del SGBD.

La seguridad en bases de datos no depende solo del servidor o firewall. Gran parte de la protección se gestiona desde el propio motor SQL.

Objetivos de DCL

  • Controlar quién accede.
  • Limitar acciones.
  • Proteger datos sensibles.
  • Garantizar cumplimiento legal.
  • Aplicar auditoría y trazabilidad.

Comandos principales

Comando Función
GRANT Otorgar permisos
REVOKE Retirar permisos
CREATE USER Crear usuarios
DCL permite decidir exactamente qué puede hacer cada usuario.
Dar permisos excesivos es uno de los errores de seguridad más comunes.
¿Qué significa DCL?
Bloque 7.2 · 35 min

DCL: usuarios

Cada persona o aplicación accede a la base de datos mediante un usuario.

CREATE USER

CREATE USER 'juan'@'localhost'
IDENTIFIED BY '1234';

Explicación

  • juan: nombre del usuario.
  • localhost: host permitido.
  • IDENTIFIED BY: contraseña.

Hosts comunes

Host Significado
localhost Solo equipo local
% Cualquier host
Usar localhost es más seguro que permitir acceso desde cualquier IP.
¿Qué hace CREATE USER?
Bloque 7.3 · 40 min

DCL: roles

Un rol es un conjunto de permisos agrupados para simplificar la administración.

Ventajas de los roles

  • Facilitan administración masiva.
  • Reducen errores.
  • Mejoran auditorías.
  • Aumentan coherencia.

Crear rol

CREATE ROLE rol_medico;

Asignar permisos al rol

GRANT SELECT, INSERT
ON clinica.*
TO rol_medico;

Asignar rol a usuario

GRANT rol_medico
TO 'medico'@'%';
Modificar un rol afecta automáticamente a todos los usuarios asociados.
¿Qué es un rol?
Bloque 7.4 · 40 min

DCL: permisos

Los permisos definen acciones concretas permitidas para usuarios o roles.

Permisos habituales

Permiso Acción
SELECT Leer datos
INSERT Insertar filas
UPDATE Modificar registros
DELETE Eliminar filas
ALL PRIVILEGES Control total

Ejemplo

GRANT SELECT, INSERT
ON tienda.*
TO 'juan'@'localhost';

El usuario podrá consultar e insertar datos, pero no borrar ni modificar.

ALL PRIVILEGES solo debe darse a administradores.
¿Qué permiso permite modificar registros?
Bloque 7.5 · 45 min

Gestión de la seguridad de una clínica privada

Las clínicas manejan datos extremadamente sensibles: historiales médicos, diagnósticos y tratamientos.

Perfiles de acceso

Perfil Permisos
Administrador ALL PRIVILEGES
Médico SELECT, INSERT
Recepción SELECT

Ejemplo médico

CREATE USER 'medico'@'%'
IDENTIFIED BY 'segura2025';

GRANT SELECT, INSERT
ON clinica.pacientes
TO 'medico'@'%';

Ejemplo recepción

CREATE USER 'recepcion'@'%'
IDENTIFIED BY 'recep2025';

GRANT SELECT
ON clinica.pacientes
TO 'recepcion'@'%';
El principio de mínimo privilegio protege información sensible.
¿Qué perfil necesita más permisos?
Bloque 7.6 · 35 min

Introducción a GRANT y REVOKE

GRANT

Otorga permisos a usuarios o roles.

GRANT privilegios
ON base.tabla
TO usuario;

REVOKE

Retira permisos existentes.

REVOKE privilegios
ON base.tabla
FROM usuario;

Lógica profesional

  • Asignar.
  • Verificar.
  • Modificar.
  • Retirar.
La seguridad es un proceso continuo, no algo estático.
¿Qué hace REVOKE?
Bloque 7.7 · 40 min

GRANT: otorgar permisos

Sintaxis general

GRANT privilegios
ON base.tabla
TO usuario;

Ejemplo práctico

GRANT SELECT, UPDATE
ON tienda.productos
TO 'ana'@'%';

Qué consigue

  • Consultar productos.
  • Modificar productos.
  • No permite borrar.

GRANT ALL PRIVILEGES

GRANT ALL PRIVILEGES
ON tienda.*
TO 'admin'@'%';
Dar demasiados permisos aumenta riesgos internos.
¿Qué comando otorga permisos?
Bloque 7.8 · 35 min

REVOKE: retirar permisos

REVOKE elimina permisos previamente asignados.

Ejemplo

REVOKE UPDATE
ON tienda.productos
FROM 'ana'@'%';

Ana podrá seguir consultando productos, pero ya no modificarlos.

Eliminar todos los permisos

REVOKE ALL PRIVILEGES
ON academia.*
FROM 'profesor'@'%';

Cuándo usar REVOKE

  • Cambio de puesto.
  • Baja de empleados.
  • Errores de permisos.
  • Auditorías.
Los permisos nunca deberían considerarse permanentes.
¿Qué ocurre tras REVOKE UPDATE?
Bloque 7.9 · 50 min

Ejemplos prácticos

Universidad: profesor

GRANT SELECT, UPDATE
ON academia.notas
TO 'profesor'@'%';

El profesor puede consultar y modificar notas.

Universidad: secretaría

GRANT SELECT
ON academia.alumnos
TO 'secretaria'@'%';

La secretaría consulta listados pero no modifica calificaciones.

Revisar permisos

SHOW GRANTS
FOR 'usuario'@'host';

Cambiar contraseña

ALTER USER 'usuario'@'host'
IDENTIFIED BY 'nuevaClave';

Buenas prácticas

  • Revisiones periódicas.
  • Documentar cambios.
  • Evitar cuentas compartidas.
  • Automatizar auditorías.
  • Usar roles siempre que sea posible.
SHOW GRANTS es esencial para auditoría y revisión de accesos.
Muchos incidentes ocurren por cuentas olvidadas con permisos antiguos.
¿Qué comando revisa permisos actuales?